package com.yy.wga.order.service.pojo;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.yy.wga.common.mysql.dto.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 购买商品订单spu信息(OrderGoodsSku)表实体类
 *
 * @author guochao
 * @since 2024-11-19 00:04:12
 */
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@TableName(value = "order_goods_sku")
public class OrderGoodsSkuDO extends BaseEntity {

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 订单号
     */
    private String orderNo;

    /**
     * skuId
     */
    private String skuId;

    /**
     * spuId
     */
    private String spuId;
    /**
     * 标题
     */
    private String title;

    /**
     * sku小图
     */
    private String thumbImg;

    /**
     * 市场价，单位分
     */
    private Integer originPrice;

    /**
     * 最终价格，单位分
     */
    private Integer finalPrice;

    /**
     * 下单数量
     */
    private Integer number;

    /**
     * 自定义属性数组，key=attr_key, value=attr_value
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Attr> skuAttrs;

    /**
     * 订单状态 1、待支付 2、下单成功 3、待发货 4、已发货 5、已取消 6、已收货 7、已结算
     */
    private Integer status;

    /**
     * 退款状态 1、未退款 2、申请退款 3、退款中 4、退款成功 5、退款拒绝
     */
    private Integer refundStatus;

    /**
     * 下单时间
     */
    private Date payTime;

    /**
     * 成单时间
     */
    private Date successTime;
    /**
     * 发货时间
     */
    private Date deliverTime;

    @Data
    public static class Attr implements Serializable {

        private static final long serialVersionUID = -4701667447145350834L;
        @JSONField(name = "attr_key")
        private String attrKey;

        @JSONField(name = "attr_value")
        private String attrValue;
    }

}
